/* 
 * File:   Trabajo.h
 * Author: max
 *
 * Created on April 26, 2013, 11:10 PM
 */

#ifndef TRABAJO_H
#define	TRABAJO_H

#include <string.h>
#include <stdint.h>
#include "common_Excepcion.h"

using namespace std;
using namespace TP;
namespace TP { namespace Criptografia { 

#define JOB_PART "JOB­PART"
#define NO_JOB_PART "NO­JOB­PART"

class Trabajo{
public:

    Trabajo();

    virtual ~Trabajo();
    
    void iniciar() throw (Excepcion&);
    
    bool habilitado();
    
    bool quedanClaves () throw (Excepcion&);
    
    string* getClave() throw (Excepcion&);
    
    int getNumeroProceso ();
    
    void setData(string& pData);

    void setNumeroProceso (string& pProceso);

    void setLongitudClave(string& pLongitudClave);

    void setRangoClaves (string& pRangoInicioClave, string& pRangoFinClave);
    
    void setTarea(const string &pTarea);
    
private:

    void ed (uint8_t *data, size_t ndata, const uint8_t *key, size_t nkey);
    
    void intToString (uint8_t *pArray, uint32_t &pArraySize, const int &pNumber);    
    
    bool dataInterpretable (uint8_t *buffer, uint32_t pLongitud);
    
    string _tarea;
    int _numeroProceso;
    size_t _longitudClave;
    
    int _rangoInicioClave;
    int _rangoFinClave;
    int _claveCursor;
    
    uint8_t *_data;
    uint32_t _dataLongitud;
    
    string _clave;
};

}}

#endif	/* TRABAJO_H */

